
-- KEYS[1]: zset stash area
-- KEYS[2]: list queue
-- ARGV[1]: stash区截止时间戳
-- ARGV[2]: POP count

-- 清理stash区，将其中超时的消息放入到发送队列中
local stash = redis.call('ZRANGEBYSCORE', KEYS[1], 0, ARGV[1]);

if( #stash > 0) 
then
    -- return stash
    redis.call('RPUSH', KEYS[2], unpack(stash));
    redis.call('ZREMRANGEBYSCORE', KEYS[1], 0, ARGV[1]);
end

-- 取消息
return redis.call('LRANGE', KEYS[2], 0, ARGV[2] - 1)

